package cn.owng.server.common.generated.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 用户基础信息
 * </p>
 *
 * @author baomidou
 * @since 2024-08-11
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("user")
public class User extends Model<User> {

    private static final long serialVersionUID = 1L;

    @TableId(value = "user_id", type = IdType.ASSIGN_ID)
    private Long userId;

    /**
     * 用于显示和搜索的用户ID
     */
    @TableField("public_id")
    private String publicId;

    /**
     * 用户名称
     */
    @TableField("username")
    private String username;

    /**
     * 性别: 0=未知 1=男 2=女
     */
    @TableField("gender")
    private Integer gender;

    /**
     * 头像
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 机器人标识: 0=否, 1是
     */
    @TableField("android")
    private Integer android;

    /**
     * 地理位置的 GeoHash（长度8位）
     */
    @TableField("geo_hash")
    private String geoHash;

    /**
     * 经度
     */
    @TableField("longitude")
    private BigDecimal longitude;

    /**
     * 纬度
     */
    @TableField("latitude")
    private BigDecimal latitude;

    /**
     * 地址
     */
    @TableField("address")
    private String address;

    /**
     * IP地址
     */
    @TableField("ip")
    private String ip;

    /**
     * 设备标识
     */
    @TableField("device_id")
    private String deviceId;

    /**
     * 账号状态: 1=正常 0=待激活 -1=禁用
     */
    @TableField("status")
    private Integer status;

    /**
     * 自我介绍
     */
    @TableField("introduction")
    private String introduction;

    /**
     * 注册来源
     */
    @TableField("source")
    private String source;

    /**
     * 注册时间
     */
    @TableField("date_added")
    private Date dateAdded;

    /**
     * 更新时间
     */
    @TableField("date_modified")
    private Date dateModified;

    /**
     * 最后登录时间
     */
    @TableField("date_last_login")
    private Date dateLastLogin;

    /**
     * 激活时间
     */
    @TableField("date_activated")
    private Date dateActivated;

    /**
     * 用户备注
     */
    @TableField("remark")
    private String remark;

    @Override
    public Serializable pkVal() {
        return this.userId;
    }
}
